Open source software is source code or programs that are available at no charge to the public for study, use, and even modification. This code is freely shared between the public and software developers. Since the software is not proprietary, large groups of programmers can modify and improve the source code. The modified software is redistributed to the public and other programmers for use in a wide variety of software applications.
Generally, open source software is not commercially developed and distributed for financial gain since the source code is free. At the same time, however, the software is often subject to restrictions in the form of licenses. Open source licenses enable users to obtain the source code for free, but provide terms that can restrict use, modification, and redistribution of the source code. Such restrictions vary from license to license and range from being unrestrictive to quite restrictive. For instance, some licenses merely require users to preserve the name of the original authors or include a copyright statement within the actual source code. By contrast, other licenses severely restrict the rights of subsequent users to sue for patent infringement, collect royalties for derivative works, and grant licenses on modified versions of the software, to name a few examples.
Since some open source licenses can be quite restrictive, software developers and companies must review and understand the terms and conditions of licenses before spending significant resources in using or modifying the source code. This task, however, can be quite difficult since code can contain one or more functions that are subject to an unknown license. As one example, programmers can modify or reuse functions and then release the functions without acknowledging licenses governing the original functions. For instance, a function originally released under a license is reused and released without a license or reference to the original license. As another example, proprietary code can be reused or classified as open source when in fact such code is subject to one or more licenses. Further, non-proprietary code or open source code can be distributed with proprietary software and thus violate an open source license.
Portions of software code can thus be subject to one or more licenses even though such licenses are not reproduced or referenced with the code. In order to discover such licenses, a person could attempt to manually review all of the source code and compare it with code known to be subject to a license. This task would be difficult or even impossible given the proliferation, modification, and distribution of code throughout the world.